package cn.buk.api.ctrip.dto.tbooking;

import cn.buk.api.ctrip.util.xstream.MyDateConverter;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;

import java.util.Date;
import java.util.List;

/**
 * Created by yfdai on 15/7/25.
 */
@XStreamAlias("OpenIssueBillDetailResponse")
public class TBookingOpenIssueBillDetail {

    /**
     * 出票单明细ID
     *
     * 出票单按人程有IssueBillDetailID
     */
    @XStreamAlias("IssueBillDetailID")
    private int issueBillDetailId;

    /**
     * 出票单ID
     */
    @XStreamAlias("IssueBillID")
    private long issueBillID;

    /**
     * 回填的航司三字码
     *
     */
    @XStreamAlias("AirLineCode")
    private String airlineCode;

    /**
     * 回填的票号
     */
    @XStreamAlias("TicketNO")
    private String ticketNo;



    /**
     * 到达城市代码
     */
    @XStreamAlias("ACity")
    private String acity;

    /**
     * 票台回填OfficeNo
     */
    @XStreamAlias("AgencyOfficeNo")
    private String agencyOfficeNo;

    /**
     * 供应商回填小编码
     */
    @XStreamAlias("AgencyRecodeNo")
    private String agencyPnrNo;

    /**
     * 乘机人类型
     * ADU:成人 CHI:儿童 BAB:婴儿
     */
    @XStreamAlias("AgeType")
    private String ageType;

    /**
     * 到达机场代码
     */
    @XStreamAlias("APort")
    private String aport;

    /**
     * 航班到达时间
     */
    @XStreamAlias("ArrivalTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date arrivalTime;




    /**
     * 乘机人出生日期
     */
    @XStreamAlias("BirthDate")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd"})
    private Date birthDate;

    /**
     * 证件号
     */
    @XStreamAlias("CardNo")
    private String cardNo;


    /**
     *证件有效期
     */
    @XStreamAlias("CardTimelimit")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date cardTimeLimit;

    /**
     * 证件类型
     */
    @XStreamAlias("CardType")
    private int cardType;

    private String cardTypeDesc;

    /**
     * 底价
     */
    @XStreamAlias("Cost")
    private float cost;

    /**
     * 底价扣率
     */
    @XStreamAlias("CostRate")
    private float costRate;

    /**
     * 最后修改时间
     */
    @XStreamAlias("DataChange_LastTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date dataChangeLastTime;

    /**
     * 创建时间
     */
    @XStreamAlias("DateChange_CreateTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date dataChangeCreateTime;

    /**
     * 起飞机场代码
     */
    @XStreamAlias("DCity")
    private String dcity;

    /**
     * 起飞城市代码
     */
    @XStreamAlias("DPort")
    private String dport;

    /**
     * 航班号
     */
    @XStreamAlias("Flight")
    private String flightNo;

    /**
     * 性别
     */
    @XStreamAlias("Gender")
    private String gender;


    /**
     * 燃油费
     */
    @XStreamAlias("OilFee")
    private float oilFee;

    @Deprecated
    @XStreamAlias("OrderID")
    private long orderID;

    /**
     * 乘机人姓名
     *
     */
    @XStreamAlias("PassengerName")
    private String passengerName;

    /**
     * 票面价
     */
    @XStreamAlias("PrintPrice")
    private float printPrice;

    /**
     * 航段编号
     */
    @XStreamAlias("Sequence")
    private int sequence;

    @XStreamAlias("SequenceType")
    private int sequenceType;

    /**
     * 子舱位
     */
    @XStreamAlias("SubClass")
    private String subClass;

    /**
     * 起飞时间
     */
    @XStreamAlias("TakeOffTime")
    @XStreamConverter(value = MyDateConverter.class, strings = {"yyyy-MM-dd'T'HH:mm:ss"})
    private Date takeOffTime;

    /**
     * 舱等
     */
    @XStreamAlias("Class")
    private String cabinClass;

    @XStreamAlias("RecordNo")
    private String pnrNo;

    @XStreamAlias("Price")
    private int price;

    /**
     * 税费
     */
    @XStreamAlias("Tax")
    private float tax;

    //fields in detail


    /**
     * 国籍
     */
    @XStreamAlias("Nationality")
    private String nationality;

    /**
     * 乘客类型
     * LAB:劳务人员 SEA:海员 MBR:会员 TAI:台商 STU:学生 YOU:青年 NEW:新移民 EMI:移民 NOR:普通 ADU:成人 CHD(CHI):儿童 BAB(INF):婴儿
     */
    @XStreamAlias("PassengerType")
    private String passengerType;

    @XStreamAlias("ForeignPrintPrice")
    private float foreignPrintPrice;

    @XStreamAlias("ForeignCost")
    private float foreignCost;

    @XStreamAlias("ForeignTax")
    private float foreignTax;

    @XStreamAlias("ForeignOilFee")
    private float foreignOilFee;

    @XStreamAlias("ThirdPartCost")
    private float thirdPartCost;

    /**
     * 共享航班号
     */
    @XStreamAlias("CarrierFlight")
    private String carrierFlight;



    public String getAcity() {
        return acity;
    }

    public void setAcity(String acity) {
        this.acity = acity;
    }

    public String getAgencyOfficeNo() {
        return agencyOfficeNo;
    }

    public void setAgencyOfficeNo(String agencyOfficeNo) {
        this.agencyOfficeNo = agencyOfficeNo;
    }

    public String getAgencyPnrNo() {
        return agencyPnrNo;
    }

    public void setAgencyPnrNo(String agencyPnrNo) {
        this.agencyPnrNo = agencyPnrNo;
    }

    public String getAgeType() {
        return ageType;
    }

    public void setAgeType(String ageType) {
        this.ageType = ageType;
    }

    public String getAport() {
        return aport;
    }

    public void setAport(String aport) {
        this.aport = aport;
    }

    public Date getArrivalTime() {
        return arrivalTime;
    }

    public void setArrivalTime(Date arrivalTime) {
        this.arrivalTime = arrivalTime;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }

    public String getCardNo() {
        return cardNo;
    }

    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }


    public int getCardType() {
        return cardType;
    }

    public void setCardType(int cardType) {
        this.cardType = cardType;
    }

    public float getCost() {
        return cost;
    }

    public void setCost(float cost) {
        this.cost = cost;
    }

    public float getCostRate() {
        return costRate;
    }

    public void setCostRate(float costRate) {
        this.costRate = costRate;
    }

    public Date getDataChangeLastTime() {
        return dataChangeLastTime;
    }

    public void setDataChangeLastTime(Date dataChangeLastTime) {
        this.dataChangeLastTime = dataChangeLastTime;
    }

    public Date getDataChangeCreateTime() {
        return dataChangeCreateTime;
    }

    public void setDataChangeCreateTime(Date dataChangeCreateTime) {
        this.dataChangeCreateTime = dataChangeCreateTime;
    }

    public String getDcity() {
        return dcity;
    }

    public void setDcity(String dcity) {
        this.dcity = dcity;
    }

    public String getDport() {
        return dport;
    }

    public void setDport(String dport) {
        this.dport = dport;
    }

    public String getFlightNo() {
        return flightNo;
    }

    public void setFlightNo(String flightNo) {
        this.flightNo = flightNo;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public long getIssueBillID() {
        return issueBillID;
    }

    public void setIssueBillID(long issueBillID) {
        this.issueBillID = issueBillID;
    }

    public float getOilFee() {
        return oilFee;
    }

    public void setOilFee(float oilFee) {
        this.oilFee = oilFee;
    }

    public long getOrderID() {
        return orderID;
    }

    public void setOrderID(long orderID) {
        this.orderID = orderID;
    }

    public String getPassengerName() {
        return passengerName;
    }

    public void setPassengerName(String passengerName) {
        this.passengerName = passengerName;
    }

    public float getPrintPrice() {
        return printPrice;
    }

    public void setPrintPrice(float printPrice) {
        this.printPrice = printPrice;
    }

    public int getSequence() {
        return sequence;
    }

    public void setSequence(int sequence) {
        this.sequence = sequence;
    }

    public String getSubClass() {
        return subClass;
    }

    public void setSubClass(String subClass) {
        this.subClass = subClass;
    }

    public Date getTakeOffTime() {
        return takeOffTime;
    }

    public void setTakeOffTime(Date takeOffTime) {
        this.takeOffTime = takeOffTime;
    }

    public float getTax() {
        return tax;
    }

    public String getCabinClass() {
        return cabinClass;
    }

    public void setCabinClass(String cabinClass) {
        this.cabinClass = cabinClass;
    }

    public String getPnrNo() {
        return pnrNo;
    }

    public void setPnrNo(String pnrNo) {
        this.pnrNo = pnrNo;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public void setTax(float tax) {
        this.tax = tax;
    }

    public String getCardTypeDesc() {
        return cardTypeDesc;
    }

    public void setCardTypeDesc(String cardTypeDesc) {
        this.cardTypeDesc = cardTypeDesc;
    }

    public int getIssueBillDetailId() {
        return issueBillDetailId;
    }

    public void setIssueBillDetailId(int issueBillDetailId) {
        this.issueBillDetailId = issueBillDetailId;
    }

    public String getNationality() {
        return nationality;
    }

    public void setNationality(String nationality) {
        this.nationality = nationality;
    }

    public String getPassengerType() {
        return passengerType;
    }

    public void setPassengerType(String passengerType) {
        this.passengerType = passengerType;
    }

    public float getForeignCost() {
        return foreignCost;
    }

    public void setForeignCost(float foreignCost) {
        this.foreignCost = foreignCost;
    }

    public float getForeignPrintPrice() {
        return foreignPrintPrice;
    }

    public void setForeignPrintPrice(float foreignPrintPrice) {
        this.foreignPrintPrice = foreignPrintPrice;
    }

    public float getThirdPartCost() {
        return thirdPartCost;
    }

    public void setThirdPartCost(float thirdPartCost) {
        this.thirdPartCost = thirdPartCost;
    }

    public float getForeignTax() {
        return foreignTax;
    }

    public void setForeignTax(float foreignTax) {
        this.foreignTax = foreignTax;
    }

    public float getForeignOilFee() {
        return foreignOilFee;
    }

    public void setForeignOilFee(float foreignOilFee) {
        this.foreignOilFee = foreignOilFee;
    }

    public String getAirlineCode() {
        return airlineCode;
    }

    public void setAirlineCode(String airlineCode) {
        this.airlineCode = airlineCode;
    }

    public String getTicketNo() {
        return ticketNo;
    }

    public void setTicketNo(String ticketNo) {
        this.ticketNo = ticketNo;
    }

    public String getCarrierFlight() {
        return carrierFlight;
    }

    public void setCarrierFlight(String carrierFlight) {
        this.carrierFlight = carrierFlight;
    }

    public int getSequenceType() {
        return sequenceType;
    }

    public void setSequenceType(int sequenceType) {
        this.sequenceType = sequenceType;
    }

    public Date getCardTimeLimit() {
        return cardTimeLimit;
    }

    public void setCardTimeLimit(Date cardTimeLimit) {
        this.cardTimeLimit = cardTimeLimit;
    }
}
